package br.com.scmimebr.entity; 

import java.io.Serializable;
import java.text.ParseException;
import java.util.Collection;
import java.util.Date;

import javax.persistence.*;

@Entity
@Table(name="membro")
@NamedQueries({
	@NamedQuery(name="Membro.consultarTodosMembros",query = "select m from Membro m"),
	@NamedQuery(name="Membro.consultarPorId",query = "select m from Membro m where m.idMembro = :idMembro"),
	@NamedQuery(name="Membro.consultarPorNome",query = "select m from Membro m where m.nome like  :nome"),
	@NamedQuery(name="Membro.consultarPorSexo",query = "select m from Membro m where m.sexo = :sexo"),
	@NamedQuery(name="Membro.relatorioTotalMembrosAnaliticoDizimistas",query = "select m from Membro m where m.dizimista = :dizimistas"),
	@NamedQuery(name="Membro.contarTotalMembrosDizimistas",query = "select count(m) from Membro m where m.dizimista = :dizimistas"),
	@NamedQuery(name="Membro.relatorioTotalMembrosAnaliticoNaoDizimistas",query = "select m from Membro m where m.dizimista = :dizimistas"),
	@NamedQuery(name="Membro.contarTotalMembrosNaoDizimistas",query = "select count(m) from Membro m where m.dizimista = :dizimistas")
})

public class Membro implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@SequenceGenerator(name="idMembro" , sequenceName="idMembro" , allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="idMembro")
	private long idMembro;
	
	@Column(name="nome")
	private String nome;
	
	@Column(name="email")
	private String email;
	
	@Column(name="dataNascimento")
	private Date dataNascimento;
	
	@Column(name="telefone")
	private String telefone;
	
	@Column(name="celular")
	private String celular;
	
	@Column(name="sexo")
	private String sexo;
	
	@Column(name="estadoCivil")
	private String estadoCivil;
	
	@Column(name="dataBatizadoNasAguas")
	private Date dataBatizadoNasAguas;
	
	@Column(name="localBatismo")
	private String localBatismo;
	
	@Column(name="endereco")
	private String endereco;
	
	@Column(name="bairro")
	private String bairro;
	
	@Column(name="cidade")
	private String cidade;
	
	@Column(name="cep")
	private String cep;
	
	@Column(name="escolaridade")
	private String escolaridade;
	
	@Column(name="profissao")
	private String profissao;
	
	@Column(name="conjuge")
	private String conjuge;
	
	@Column(name="dizimista")
	private String dizimista;
	
	@Column(name="porqueDizimista")
	private String porqueDizimista;
	
	@Column(name="dataCasamento")
	private Date dataCasamento;
	
	@OneToMany(mappedBy = "membro", targetEntity = Dizimo.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	private Collection<Dizimo> dizimosMembro;
	
	
	//Atributos transient
	private transient Double totalDizimoAno;
	
	//**************** GETTERS AND SETTERS ************************//
	
	public long getIdMembro() {
		return idMembro;
	}

	public void setIdMembro(long idMembro) {
		this.idMembro = idMembro;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) throws ParseException {
		this.dataNascimento = dataNascimento;
	}

	public String getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	public Date getDataBatizadoNasAguas() {
		return dataBatizadoNasAguas;
	}

	public void setDataBatizadoNasAguas(Date dataBatizadoNasAguas) {
		this.dataBatizadoNasAguas = dataBatizadoNasAguas;
	}

	public String getLocalBatismo() {
		return localBatismo;
	}

	public void setLocalBatismo(String localBatismo) {
		this.localBatismo = localBatismo;
	}

	public String getEscolaridade() {
		return escolaridade;
	}

	public void setEscolaridade(String escolaridade) {
		this.escolaridade = escolaridade;
	}

	public String getProfissao() {
		return profissao;
	}

	public void setProfissao(String profissao) {
		this.profissao = profissao;
	}

	public String getConjuge() {
		return conjuge;
	}

	public void setConjuge(String conjuge) {
		this.conjuge = conjuge;
	}

	public String getDizimista() {
		return dizimista;
	}

	public void setDizimista(String dizimista) {
		this.dizimista = dizimista;
	}

	public String getPorqueDizimista() {
		return porqueDizimista;
	}

	public void setPorqueDizimista(String porqueDizimista) {
		this.porqueDizimista = porqueDizimista;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public Date getDataCasamento() {
		return dataCasamento;
	}

	public void setDataCasamento(Date dataCasamento) {
		this.dataCasamento = dataCasamento;
	}

	public Collection<Dizimo> getDizimosMembro() {
		return dizimosMembro;
	}

	public void setDizimosMembro(Collection<Dizimo> dizimosMembro) {
		this.dizimosMembro = dizimosMembro;
	}

	public Double getTotalDizimoAno() {
		return totalDizimoAno;
	}

	public void setTotalDizimoAno(Double totalDizimoAno) {
		this.totalDizimoAno = totalDizimoAno;
	}

	
	//**************** GETTERS AND SETTERS ************************//
	
}
